|
|
|
| Align 2 Columns Of Matching Data And Strip Out Non-Matched Data Browse this data with a requirement to match data in columns B and C - then discard unmatched values |
A |
B |
C |
D |
E |
|
| 1 | FLEZ054246 | TXEZ061244 | WCG | TX | |
| 2 | TXEZ061411 | TXEZ059129 | DOUGLAS | FL | |
| 3 | TXEZ061244 | TXEZ061101 | ERNIE | TX | |
| 4 | TXEZ061101 | FLEZ059314 | JASON | FL | |
| 5 | FLEZ054336 | TXEZ064240 | ERNIE | FL | |
| 6 | TXEZ063075 | TXEZ059503 | MICHEAL | TX | |
| 7 | FLEZ060652 | TXEZ059027 | CLAIRE | TX | |
| 8 | FLEZ-054341 | TXEZ059063 | CLAIRE | TX | |
| 9 | TXEZ060723 | TXEZ059164 | PAUL | FL | |
| 10 | TXEZ059503 | ||||
| 11 | FLEZ059314 | ||||
| 12 | TXEZ059164 | ||||
| 13 | TXEZ059129 | ||||
| 14 | TXEZ059063 | ||||
| 15 | TXEZ059051 | ||||
| 16 | TXEZ059027 |
The VB looks like this
Sub test()
Dim a, b, i As Long, ii As Integer
With Range("b1", Range("b" & Rows.Count).End(xlUp))
a = .Value
ReDim Preserve a(1 To UBound(a, 1), 1 To 4)
b = Range("c1", Range("c" & Rows.Count).End(xlUp)).Resize(, 3).Value
With CreateObject("Scripting.Dictionary")
.CompareMode = vbTextCompare
For i = 1 To UBound(a, 1)
.Add a(i, 1), i
Next
For i = 1 To UBound(b, 1)
If .exists(b(i, 1)) Then
For ii = 2 To 4
a(.Item(b(i, 1)), ii) = b(i, ii - 1)
Next
End If
Next
End With
.Resize(, 4).Value = b
End With
End Sub
|
And the result looks like this
A |
B |
C |
D |
E |
|
1 |
TXEZ061244 | WCG | TX | #N/A | |
2 |
TXEZ059129 | DOUGLAS | FL | #N/A | |
3 |
TXEZ061101 | ERNIE | TX | #N/A | |
4 |
FLEZ059314 | JASON | FL | #N/A | |
5 |
TXEZ064240 | ERNIE | FL | #N/A | |
6 |
TXEZ059503 | MICHEAL | TX | #N/A | |
7 |
TXEZ059027 | CLAIRE | TX | #N/A | |
8 |
TXEZ059063 | CLAIRE | TX | #N/A | |
9 |
TXEZ059164 | PAUL | FL | #N/A | |
10 |
#N/A | #N/A | #N/A | #N/A | |
11 |
#N/A | #N/A | #N/A | #N/A | |
12 |
#N/A | #N/A | #N/A | #N/A | |
13 |
#N/A | #N/A | #N/A | #N/A | |
14 |
#N/A | #N/A | #N/A | #N/A | |
15 |
#N/A | #N/A | #N/A | #N/A | |
16 |
#N/A | #N/A | #N/A | #N/A |